<?php
/*
 * Detalle Paciente (Datos)
 * @Autor: Andrés Ubilla
 */
class Detalle extends TPage{
    
    public function onLoad($param) {
        parent::onLoad($param);
    
        if(!$this->IsPostBack){
            $this->cargarInterfaz();
        }
    }
    
    private function cargarInterfaz(){        
        try{
            $oPaciente = $this->obtenerDatosPaciente();
            $arrHistorialEvaluaciones = $this->obtenerEvaluacionesPaciente();
            $arrEvaluacionesAntro = $this->obtenerEvaluacionesAntropometricas();
            $arrFamiliares = $this->obtenerFamiliaresPaciente();
            $lista = $this->obtenerEncuestaConsumo();
            //$listaAlimentos = $this->obtenerAlimentos();
            $this->iniciarControles($oPaciente, $arrHistorialEvaluaciones, $arrEvaluacionesAntro, $arrFamiliares);
        }catch(Exception $e){
            throw new Exception($e->getMessage());
        }
    }
    
    private function obtenerDatosPaciente(){
        $oPaciente = new Paciente();
        $idPaciente = Util::isNull($this->Request["idPaciente"], "-1");

        if($idPaciente != "-1"){
            $oPacienteBLL = new PacienteBLL();
            $oPaciente = $oPacienteBLL->obtenerPorId($idPaciente);
            
            return $oPaciente;
        }else{
            $oPaciente = null;
        }  
    }

    private function obtenerEvaluacionesPaciente(){        
        $idPaciente = Util::isNull($this->Request["idPaciente"], "-1");
        
        if($idPaciente != "-1"){
            $arrHistorialEvaluaciones = array();
            $oHistorialEvaluacionesBLL = new HistorialEvaluacionesBLL();
            $arrHistorialEvaluaciones = $oHistorialEvaluacionesBLL->listar($idPaciente);
            
            return $arrHistorialEvaluaciones;
        }else{
            $arrHistorialEvaluaciones = null;
        }     
    }
    
    private function obtenerEvaluacionesAntropometricas(){
        $idPaciente = Util::isNull($this->Request["idPaciente"], "-1");
        
        if($idPaciente != "-1"){
            $arrEvaluacionesAntro = array();
            $oEvaluacionesAntroBLL = new EvaluacionAntropometricaBLL();
            $arrEvaluacionesAntro = $oEvaluacionesAntroBLL->listarPorId($idPaciente);
            
            return $arrEvaluacionesAntro;
        }else{
            $arrEvaluacionesAntro = null;
        }
    }

    private function obtenerEncuestaConsumo(){
        //Obtengo lista de alimentos
//        $oAlimento = new Alimentos();
//        $oAlimentoBLL = new AlimentosBLL();
//        $arrAlimentos = $oAlimentoBLL->listar($oAlimento);
        
        //Obtengo lista de encuestas por id paciente
        $oEncuesta = new EncuestaConsumo();
        $idPaciente = Util::isNull($this->Request["idPaciente"], "-1");
        
        if($idPaciente != "-1"){
            $oEncuestaBLL = new EncuestaConsumoBLL();
            $oEncuesta = $oEncuestaBLL->obtenerPorIdPaciente($idPaciente);
            
            return $oEncuesta;
        }else{
           $oEncuesta = null;
           return $oEncuesta;
        }
        
        // Genero lista de alimentos y cantidad de consumo
        $lista = "";
        
        if($oEncuesta != null){
            foreach ($oEncuesta as $row){
                $lista .= "<tr id=".$row->getId().">
                            <td>".$row->getNombre()."</td>
                            <td>".$row->getDiaria()."</td>
                            <td>".$row->getSemanal()."</td>
                            <td>".$row->getmensual()."</td>
                            <td>".$row->getNunca()."</td>
                            </tr>";           
            }
            return $lista;
        }        
    }
    
    private function obtenerFamiliaresPaciente(){
        $idPaciente = Util::isNull($this->Request["idPaciente"], "-1");
        if($idPaciente != "-1"){
            try{
                $arrFamiliares = array();
                $oFamiliaresBLL = new PadresBLL();
                
                $arrFamiliares = $oFamiliaresBLL->listar($idPaciente);
                
                return $arrFamiliares;
            }catch(Exception $e){
                throw new Exception($e->getMessage());
            }
        }else{
            $arrFamiliares = null;
            
            return $arrFamiliares;
        }
    }

    private function iniciarControles($oPaciente, $arrHistorialEvaluacion, $arrEvaluacionesAntro, $arrFamiliares){
        $this->AutoComplete->Attributes->Add("placeholder","Buscar paciente por rut o nombre");
        
        try{
            if($oPaciente != null && $oPaciente->getFechaNacimiento() != null && $oPaciente->getSexo() != null){
                $this->pnlBotonAgregarEvaluacion->Visible = true;
                $this->pnlBotonAgregarFamiliar->Visible = true;
                $this->pnlTablaDatosPersonales->Visible = true;
                $this->pnlDatosPersonalesSinRegistros->Visible = false;
                $this->idPaciente->Value = $oPaciente->getId();
                $this->imgPaciente->ImageUrl = $oPaciente->getImagen();
                $this->lblRut->Text = $oPaciente->getRut();
                $this->lblNombre->Text = $oPaciente->getNombre();
                $this->lblApellido->Text = $oPaciente->getApellido();
                $this->lblFechaNacimiento->Text = Util::fechaDateTimeANormal($oPaciente->getFechaNacimiento());
                $this->lblSexo->Text = $oPaciente->getSexo();
                $this->lblEmail->Text = $oPaciente->getEmail();
                $this->lblTelefono->Text = $oPaciente->getTelefono();
                $this->lblNombreApellido->Text = $oPaciente->getNombre() .' '. $oPaciente->getApellido();
                $this->lblActividad->Text = $oPaciente->getActividad();
                $this->lblEdad->Text = Util::calcularEdadDecimal($oPaciente->getFechaNacimiento());
                $this->litBotonRegistrarEvaluacion->Text = "<a href='?page=Evaluacion.Seleccion&idPaciente=".$oPaciente->getId()."' class='btn btn-success span12'><i class='icon-plus-sign icon-white' style='position: relative; top: -2px;'></i> Registrar nueva evaluacion</a>";
            }else if($oPaciente != null){
                $this->pnlBotonAgregarEvaluacion->Visible = false;
                $this->pnlBotonAgregarFamiliar->Visible = false;
                $this->pnlTablaDatosPersonales->Visible = false;
                $this->pnlDatosPersonalesSinRegistros->Visible = true;
                $this->lblNombreApellido->Text = "";
                $this->litMensajePacienteIncompleto->Text = "<div class='sinRegistros'><span>El paciente seleccionado no tiene su informaci&oacute;n principal completa, antes de continuar debe completar su ficha <a href='?page=Paciente.Editar&idPaciente=".$oPaciente->getId()."' style='color: #ff0;'>AQU&Iacute;</a></span></div>";
                $this->litAlert->Text = Util::setMensajeUsuario("El paciente seleccionado no tiene su informaci&oacute;n principal completa, lo puede completar <a href='?page=Paciente.Editar&idPaciente=".$oPaciente->getId()."'>AQU&Iacute;</a>", Util::MENSAJE_ALERTA);                
            }else{
                $this->pnlBotonAgregarEvaluacion->Visible = false;
                $this->pnlBotonAgregarFamiliar->Visible = false;
                $this->pnlTablaDatosPersonales->Visible = false;
                $this->pnlDatosPersonalesSinRegistros->Visible = true;
                $this->lblNombreApellido->Text = "";
                $this->litMensajePacienteIncompleto->Text = "<div class='sinRegistros'><span>El paciente seleccionado no existe en el sistema, puede seleccionar o buscar al paciente <a href='?page=Paciente.Listar' style='color: #ff0;'>AQU&Iacute;</a></span></div>";
                $this->litAlert->Text = Util::setMensajeUsuario("El paciente seleccionado no existe en el sistema, puede seleccionar o buscar al paciente <a href='?page=Paciente.Listar'>AQU&Iacute;</a></span></div>", Util::MENSAJE_ALERTA);                
            }
            
            if($arrHistorialEvaluacion != null){   
                /* CARGO EVALUACIONES EN GRILLA DE HISTORIAL DE EVALUACIONES */
                $this->pnlEvaluacionesSinRegistros->Visible = false;                
                $this->dgEvaluaciones->DataSource = $arrHistorialEvaluacion;
                $this->dgEvaluaciones->dataBind();
                
                /* CARGO EVALUACIONES EN GRILLA DE HISTORIAL DE ATENCIONES */
                $this->pnlHistorialAtencionSinRegistros->Visible = false;
                $this->dgHistorialAtenciones->DataSource = $arrHistorialEvaluacion;
                $this->dgHistorialAtenciones->dataBind();
                
            }else{
                $this->pnlEvaluacionesSinRegistros->Visible = true;
                $this->pnlHistorialAtencionSinRegistros->Visible = true;
            }
            
            if($arrEvaluacionesAntro != null){
                $this->pnlEvaluacionesAntropometricasSinRegistros->Visible = false;
                $this->dgEvaluacionesAntropometricas->DataSource = $arrEvaluacionesAntro;
                $this->dgEvaluacionesAntropometricas->DataBind();
            }else{
                $this->pnlEvaluacionesAntropometricasSinRegistros->Visible = true;
            }
            
            if($arrFamiliares != null){
                $this->pnlFamiliaresSinRegistros->Visible = false;
                $this->dgFamiliares->DataSource = $arrFamiliares;
                $this->dgFamiliares->dataBind();
                
                if(count($arrFamiliares) < 2){
                    $this->pnlBotonAgregarFamiliar->Visible = true;
                    $this->litBotonRegistrarFamiliar->Text = "<a href='?page=Padres.Agregar&idPaciente=".$oPaciente->getId()."' class='btn btn-success span12' style='margin-bottom: 10px'><i class='icon-plus-sign icon-white' style='position: relative; top: -2px;'></i> Registrar familiar</a>";
                }else{
                    $this->pnlBotonAgregarFamiliar->Visible = false;
                }
            }else{
                $this->pnlBotonAgregarFamiliar->Visible = true;
                $this->pnlFamiliaresSinRegistros->Visible = true;
                $this->litBotonRegistrarFamiliar->Text = "<a href='?page=Padres.Agregar&idPaciente=".$oPaciente->getId()."' class='btn btn-success span12' style='margin-bottom: 10px'><i class='icon-plus-sign icon-white' style='position: relative; top: -2px;'></i> Registrar familiar</a>";
            }
                    
        }catch(Exception $e){
            $this->pnlTablaDatosPersonales->Visible = false;
            $this->litAlert->Text = Util::setMensajeUsuario("".$e->getMessage()."", Util::MENSAJE_ERROR);
            //$this->litAlert->Text = Util::setMensajeUsuario("Lo sentimos, se ha producido un error al cargar la ficha del paciente <a href='?page=Paciente.Listar'>VOLVER</a>", Util::MENSAJE_ERROR);
        }
    }
    
    public function buscarPacientes($sender,$param) {        
        $consulta = $param->getToken();
        
        $oPacienteBLL = new PacienteBLL();
        
        $arrPacientes = $oPacienteBLL->obtenerPorBusqueda($consulta);
        $listaPacientes = array();
                
        foreach ($arrPacientes as $row){
            $paciente = array('id' => $row->getId(), 'paciente' => $row->getNombre());
            $listaPacientes[] = $paciente;
        }

        $this->AutoComplete->DataSource = $listaPacientes;
        $this->AutoComplete->dataBind();
    }
    
    public function pacienteSeleccionado($sender,$param){              
        $id = $sender->Suggestions->DataKeys[ $param->selectedIndex ];
        
        if($id > 0){
            $this->Response->redirect("index.php?page=Detalle.Detalle&idPaciente=" . $id);
        }else{
            $this->Response->redirect("index.php?page=Paciente.Agregar");
        }        
    }
}
?>
